Skip to content

security(assail): classify the 4 audited false-positive panic-attack residuals#166

Merged
hyperpolymath merged 3 commits into
mainfrom
claude/neurophone-repo-setup-envzix
Jul 1, 2026
Merged

security(assail): classify the 4 audited false-positive panic-attack residuals#166
hyperpolymath merged 3 commits into
mainfrom
claude/neurophone-repo-setup-envzix

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Makes panic-attack assail provably clean for neurophone (answers "is it fully
panic-attacked and safely remediated?" — yes).

I built + ran the panic-attack tool against neurophone: 9 weak points, 0 real
vulnerabilities.
5 PanicPath findings are already auto-suppressed (test/bench code).
The 4 production-script findings are audited-sound false positives, now recorded in
the user-classification registry (which lives apart from the source, so a finding can't
self-suppress — a reviewable companion change per the panic-attack pattern):

  • audits/assail-classifications.a2ml:
    • scripts/{setup,install-on-phone,uninstall}.sh PathTraversal — the flagged path
      is /data/local/tmp/ (the canonical Android adb device-staging dir), not host
      /tmp. mktemp would be incorrect for a device path.
    • scripts/install-termux.sh HardcodedSecret — a public HuggingFace model URL
      • a commented # api_key = "sk-ant-..." placeholder in a generated config template.
        No secret is committed.
  • audits/audit-install-scripts.adoc — the reviewable rationale, cross-referenced per entry.

Verified: re-ran the built binary → total weak_points=9, suppressed=9, unsuppressed=0. Production code remains 0 unsafe / 0 panic-sites / 0 injection /
0 crypto-misuse. must-check exit 0.

Note (flagged, not fixed here)

panic-attack emits failed to read AI manifest: extra tokens after manifest on
0-AI-MANIFEST.a2ml — a minor a2ml-format nuance for a follow-up (doesn't affect the scan).

This is workstream A of the audit-remediation plan; doc-format fixes, RSR gaps, wikis,
android tests, and bot docs follow as separate PRs.

🤖 Generated with Claude Code

https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh


Generated by Claude Code

claude and others added 3 commits July 1, 2026 14:37
…residuals

`panic-attack assail .` reports 9 weak points and 0 real vulnerabilities. The 5
PanicPath findings are auto-suppressed (test/bench code). The 4 production-script
findings are audited-sound false positives; record them in the user-classification
registry so re-scans are honestly, verifiably clean (registry lives apart from the
source, so a finding can't self-suppress — reviewable companion change).

- audits/assail-classifications.a2ml — classifies:
  * scripts/{setup,install-on-phone,uninstall}.sh PathTraversal — the flagged path
    is `/data/local/tmp/` (the canonical Android adb device-staging dir), NOT host
    `/tmp`; `mktemp` would be incorrect for a device path.
  * scripts/install-termux.sh HardcodedSecret — a public HuggingFace model URL + a
    commented `# api_key = "sk-ant-..."` placeholder in a generated config template;
    no secret committed.
- audits/audit-install-scripts.adoc — the reviewable rationale (§1 device paths,
  §2 public URL / commented key template) cross-referenced by each entry.

Verified: re-ran the built panic-attack binary against neurophone — total
weak_points=9, suppressed=9, unsuppressed=0. Production code remains 0 unsafe /
0 panic-sites / 0 injection / 0 crypto-misuse.

Note (flagged, not fixed here): panic-attack emits "failed to read AI manifest:
extra tokens after manifest" on 0-AI-MANIFEST.a2ml — a minor a2ml-format nuance
to address in a follow-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh
The estate `Validate A2ML manifests` gate (a2ml-validate-action) requires every
.a2ml to carry an identity field (project/name/agent-id) and a version/
schema_version; panic-attack's registry format is bare S-expression, so the new
audits/assail-classifications.a2ml failed with "Missing required identity field".

Add top-level `project` + `schema_version` (matching a2ml-ecosystem
conformance/valid/sectioned-manifest.a2ml) plus a `[metadata]` name/version.
panic-attack's loader only reads `(classification …)` blocks and ignores
everything else, so suppression is unaffected — re-verified: total=9,
suppressed=9, unsuppressed=0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 1, 2026 19:45
@hyperpolymath
hyperpolymath merged commit 45aaf2b into main Jul 1, 2026
29 of 30 checks passed
@hyperpolymath
hyperpolymath deleted the claude/neurophone-repo-setup-envzix branch July 1, 2026 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants